#include <bits/stdc++.h>
using namespace std;

void f(int a[],int l,int r,int& max1,int& max2){
	if(l==r){
		max1=a[l];max2=INT_MIN;
	}
	else if(l+1==r){
		max1=max(a[l],a[r]);
		max2=min(a[l],a[r]);
	}
	else{
		int m=(l+r)/2;
		int lmax1, lmax2, rmax1, rmax2;
		f(a,l,m,lmax1,lmax2);
		f(a,m+1,r,rmax1,rmax2);
		if (lmax1>rmax1) {
		            max1 = lmax1;
		            max2 = max(lmax2, rmax1);
		        } else {
		        	
		            max1 = rmax1;
		            max2 = max(rmax2, lmax1);
		        }
		    }
		}
int main(){
	     int n;
		 cin >> n;
		 vector<int> a(n);
		 for (int i=0; i<n; i++) {
		        cin>>a[i];
		    }
		 int max1, max2;
		 f(a.data(), 0, n - 1, max1, max2);
		cout<<max1<< " " <<max2<< endl;
	 return 0; 
}
//INT_MAX INT_MIN limits.h
//DBL_MAX -DBL_MAX float.h
